Arithmetic Coding with Folds and Unfolds

نویسندگان

  • Richard S. Bird
  • Jeremy Gibbons
چکیده

Arithmetic coding is a method for data compression. Although the idea was developed in the 1970’s, it wasn’t until the publication of an “accessible implementation” [14] that it achieved the popularity it has today. Over the past ten years arithmetic coding has been refined and its advantages and disadvantages over rival compression schemes, particularly Huffman [9] and Shannon-Fano [5] coding, have been elucidated. Arithmetic coding produces a theoretically optimal compression under much weaker assumptions than Huffman and Shannon-Fano, and can compress within one bit of the limit imposed by Shannon’s Noiseless Coding Theorem [13]. Additionally, arithmetic coding is well suited to adaptive coding schemes, both character and word based. For recent perspectives on the subject, see [10, 12]. The “accessible implementation” of [14] consisted of a 300 line C program, and much of the paper was a blow-by-blow description of the workings of the code. There was little in the way of proof of why the various steps in the process were correct, particularly when it came to the specification of precisely what problem the implementation solved, and the details of why the inverse operation of decoding was correct. This reluctance to commit to specifications and correctness proofs seems to be a common feature of most papers devoted to the topic. Perhaps this is not surprising, because the plain fact is that arithmetic coding is tricky. Nevertheless, our aim in these lectures is to provide a formal derivation of basic algorithms for coding and decoding. Our development of arithmetic coding makes heavy use of the algebraic laws of folds and unfolds. Although much of the general theory of folds and unfolds is well-known, see [3, 6], we will need one or two novel results. One concerns a new pattern of computation, which we call streaming. In streaming, elements of an output list are produced as soon as they are determined. This may sound like lazy evaluation but it is actually quite different.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

A Duality of Sorts

Sorting algorithms are one of the key pedagogical foundations of computer science, and their properties have been studied heavily. Perhaps less well known, however, is the fact that many of the basic sorting algorithms exist as a pair, and that these pairs arise naturally out of the duality between folds and unfolds. In this paper, we make this duality explicit, by showing how to define common ...

متن کامل

ENTROPY OF GEODESIC FLOWS ON SUBSPACES OF HECKE SURFACE WITH ARITHMETIC CODE

There are dierent ways to code the geodesic flows on surfaces with negative curvature. Such code spaces give a useful tool to verify the dynamical properties of geodesic flows. Here we consider special subspaces of geodesic flows on Hecke surface whose arithmetic codings varies on a set with innite alphabet. Then we will compare the topological complexity of them by computing their topological ...

متن کامل

Adjoint folds and unfolds - An extended study

Folds and unfolds are at the heart of the algebra of programming. They allow the cognoscenti to derive andmanipulate programs rigorously and effectively. However, most, if not all, programs require some tweaking to be given the form of an (un)fold. In this article, we remedy the situation by introducing adjoint (un)folds. We demonstrate that most programs are already of the required form and th...

متن کامل

Origami programming

3 origami (˛ orig¯ a·mi) The Japanese art of making elegant designs using folds in all kinds of paper. One style of functional programming is based purely on recursive equations. Such equations are easy to explain, and adequate for any computational purpose , but hard to use well as programs get bigger and more complicated. In a sense, recursive equations are the 'assembly language' of function...

متن کامل

Engineering Mountain Folds in Cell Origami

We report a method to create mountain folds, protruding ridges, in cell origami, a polymer structure folding technique driven by cell traction force (CTF). Formerly, cell origami was based on valley folds, indented creases, only [2]. We created mountain folds adjacent with valley folds. We present designs for self-folding structures as well as for physically stimulated structures. The adhered c...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2002